package com.itlong.cloud.app.service;

import com.itlong.cloud.POJO.DTO.app.AppGetDateListPageDTO;
import com.itlong.cloud.POJO.DTO.app.AppGetPassRecordListPageDTO;
import com.itlong.cloud.POJO.VO.app.AppGetPassRecordListPageVO;
import com.itlong.cloud.POJO.VO.app.AppUploadPassErrorVO;
import com.itlong.cloud.utils.page.Page;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      用户通行记录业务处理接口
 * </desc>
 *
 * @createDate 2017/11/09
 */
public interface IAppDevicePassRecordService {
    /**
     * <desc>
     *      获取用户有通行记录的日期分页列表
     * </desc>
     *
     * @param dto dto参数实体
     * @return
     * @author Jiaqi.X
     * @createDate 2017/11/09
     */
    Page<String> getPassDateListPage(AppGetDateListPageDTO dto) throws Exception;

    /**
     * <desc>
     *      获取用户通行记录分页列表
     * </desc>
     *
     * @param dto 参数dto类
     * @return
     * @author Jiaqi.X
     * @createDate 2017/11/09
     */
    Page<AppGetPassRecordListPageVO> getPage(AppGetPassRecordListPageDTO dto) throws Exception;

    /**
     * <desc>
     *      上传用户通行记录
     * </desc>
     *
     * @param userId   用户id
     * @param recordJson json数据串
     * @param projectId 项目id
     * @return
     * @author Jiaqi.X
     * @createDate 2017/11/10
     */
    List<AppUploadPassErrorVO> uploadRecord(String userId,String projectId,String recordJson,String imageStr,String imageType) throws Exception;


    /**
     * <desc>
     *       同步定时任务通行记录至具体设备通行记录表
     * </desc>
     *
     * @author Jiaqi.X
     * @createDate 2017/11/10
     */
    public void timeTaskSychro() throws Exception;

    /**
     * <desc>
     *      以用户为基准删除通行时间大于3个月的记录
     * </desc>
     *
     * @author Jiaqi.X
     * @createDate 2017/11/13
     */
    public void timeTaskDeleteRecord();

    /**
     * <desc>
     *      获取通行记录列表，app2.0版本新增
     * </desc>
     *
     * @param projectId 项目编号
     * @param pageIndex 当前页数(每页15条)
     * @param userId 用户id
     * @return 通行记录列表
     * @author wangzhi
     * @createDate 2019/06/18
     */
    Map<String,Object> getOpenDoorRecord(String projectId, String pageIndex, String userId) throws Exception;

    /**
     * <desc>
     *      获取电梯通行记录列表，app2.0版本新增
     * </desc>
     *
     * @param pageNum 当前页数(每页15条)
     * @param userId 用户id
     * @return 通行记录列表
     * @author Qiang.S
     * @createDate 2019/06/26
     */
    Map<String,Object> getLiftHistory(String pageNum, String userId) throws Exception;

    /**
     * <desc>
     *      获取访客通行密码邀请记录
     * </desc>
     *
     * @param projectId 项目编号
     * @param pageNo 页数
     * @param pageSize 每页数
     * @param userId 用户id
     * @return 访客通行密码邀请记录
     * @author wangzhi
     * @createDate 2019/06/24
     */
    Map<String,Object> getInviteRecord(String projectId, String pageNo, String pageSize, String userId) throws Exception;


    /**
     * <desc>
     * 访客详情
     * </desc>
     *
     * @param passId
     * @return
     * @author caoshuai
     * @createDate 2021/1/21 15:47
     */
    Map<String,Object> getVisitorsInfo(String passId);
}
